package com.duanzz.sqlSession;

import java.sql.SQLException;
import java.util.List;

public interface SqlSession {

    /**
     *
     * @param statementId mapStatements中的key
     * @param params 入参
     * @param <T> 返回的类型是什么就是什么
     * @return
     */
    <T> List<T> selectList(String statementId,Object...params) throws Exception;

    /**
     *
     * @param statementId mapStatements中的key
     * @param params 入参
     * @param <T> 返回的一个
     * @return
     */
    <T> T selectOne(String statementId,Object...params) throws Exception;

    /**
     * 新增方法
     * @param statementId
     * @param params
     * @return 插入的行数
     */
    int insert(String statementId,Object...params) throws Exception;


    /**
     * 修改方法
     * @param statementId
     * @param params
     * @return 修改的行数
     */
    int update(String statementId,Object...params) throws Exception;


    /**
     * 删除方法
     * @param statementId
     * @param params
     * @return
     */
    int delete(String statementId,Object...params) throws Exception;


    /**
     * 为dao接口生成代理实现类
     * @param mapperClass
     * @param <T> 返回类型
     * @return
     */
    <T> T getMapper(Class<?> mapperClass);


    /**
     * 关闭sqlsession
     */
    void close() throws SQLException;


}
